package biblioGraphiqueV2;

import java.util.Collection;
import java.util.HashMap;

public class Auteur extends Personne {
//Classe Auteur servant aux ouvrages et articles
	
	private static final long serialVersionUID = 1L;
	
	private HashMap<String, Ouvrage> ouvrage;
	private HashMap<String, Article> article;
	
	public Auteur(String nomAuteur, String prenomAuteur) 
	{
		super(nomAuteur,prenomAuteur);
		setOuvrage(new HashMap<String, Ouvrage>());
		setArticle(new HashMap<String, Article>());
	}
	
	
	// ---------------------------------------------------------//
	// Getters
	// ---------------------------------------------------------//
	public Collection<Ouvrage> getOuvrage() 
	{
		return ouvrage.values();
	}
	
	public HashMap<String, Ouvrage> getOuvrages() 
	{
		return ouvrage;
	}
	
	public HashMap<String, Article> getArticles(){
		return article;
	}

	//----------------------------------------------------------//
	public Ouvrage getOuvrage(String isbn) 
	{
		return ouvrage.get(isbn);
	}
	
	public Article getArtcile(String titre) {
		return article.get(titre);
	}

	// ---------------------------------------------------------//
	// Setters
	// ---------------------------------------------------------//

	private void setOuvrage(HashMap<String, Ouvrage> ouvrage)
	{
		this.ouvrage = ouvrage;
	}
	
	private void setArticle(HashMap<String, Article> article) {
		this.article = article;
	}
	
	public void setArticle (Article article) {
		this.article.put(article.getTitre(), article);
	}
	
	
	// ------------------------------------------------------------------------------------------------------------
	// Traitements
	// ------------------------------------------------------------------------------------------------------------
	
	/**
	 * Ajoute un ouvrage dans l'ensemble
	 * @param ouvrage, l'ouvrage à ajouter dans l'ensemble
	 */
	public void addOuvrage(Ouvrage ouvrage)
	{
		this.ouvrage.put(ouvrage.getIsbn(), ouvrage);
	}
	
	public String toString() {
		return getNom()+" "+getPrenom();
	}
	
	//Méthodes pour l'observer/observable
	public void notifierObservateurs() {
			this.setChanged();
			this.notifyObservers();	
	}
}